import java.util.Scanner;
import java.util.HashSet;
import java.util.Set;

public class PermutationGenerator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 获取用户输入
        String input = scanner.nextLine();
        // 生成并打印所有排列
        Set<String> permutations = new HashSet<>();
        permute(input, 0, permutations);
        for (String perm : permutations) {
            System.out.println(perm);
        }
        scanner.close();
    }

    /**
     * 生成字符串的所有排列
     *
     * @param str 输入字符串
     * @param index 当前处理的位置
     * @param permutations 用于存储所有排列的集合
     */
    public static void permute(String str, int index, Set<String> permutations) {
        if (index == str.length() - 1) {
            permutations.add(str); // 当到达字符串的最后一个字符时，添加到集合中
            return;
        }

        for (int i = index; i < str.length(); i++) {
            // 交换当前索引与i位置的字符
            str = swap(str, index, i);
            // 递归生成剩余字符的排列
            permute(str, index + 1, permutations);
            // 回溯，恢复原始字符串
            str = swap(str, index, i);
        }
    }

    /**
     * 交换字符串中的两个字符
     *
     * @param str 输入字符串
     * @param i 第一个字符的位置
     * @param j 第二个字符的位置
     * @return 交换后的字符串
     */
    public static String swap(String str, int i, int j) {
        char[] charArray = str.toCharArray();
        char temp = charArray[i];
        charArray[i] = charArray[j];
        charArray[j] = temp;
        return String.valueOf(charArray);
    }
}